/*
 * Copyright (C) 2012 POAS.VSTU
 */

package model;

import java.util.ArrayList;
import java.util.List;

/**
 * Кон
 */
public class CardPileKitty extends CardPile {

    /** Левая, неактивная часть кона */
    private CardPile        mLeftPart;

     /** Правая, активная часть кона */
    private CardPile        mRightPart;

    public CardPileKitty() {
        mLeftPart = new CardPile();
        mRightPart = new CardPile();
    }

    /**  Общий размер кона */
    public int size() {
        return mLeftPart.size() + mRightPart.size();
    }

    /** Добавляет карты из правой части кона в левую */
    private void mergeParts() {
        if(mRightPart.size() > 0){
            mLeftPart.push(mRightPart.popAll());
        }
    }

    /**
     * Добавляет список карт на кон
     * @param карты, добавляемые в правую часть кона
     */
    public void push(List<Card> cards) {
        mergeParts();
        mRightPart.push(cards);
    }


   /** Очищает кон */
    public void clear() {

        mRightPart.clear();
        mLeftPart.clear();
    }

    /** Возвращает левую часть кона   */
    public CardPile leftPart(){
        return mLeftPart;
    }

    /** Возвращает правую часть кона   */
    public CardPile rightPart(){
        return mRightPart;
    }

    /**
     * Достает все карты из стопки
     * @return  карты из стопки
     */
    public ArrayList<Card> popAll() {

        ArrayList<Card> other = (ArrayList<Card>) mLeftPart.popAll();
        other.addAll(mRightPart.popAll());
        mLeftPart.clear();
        mRightPart.clear();
        return other;
    }


    /** Преобразует кон в строку */
    public String toString(){

        String result = "";
        for (Card tmpCard : mRightPart) {
            result += tmpCard.toString() + " ";
        }

        for (Card tmpCard : mLeftPart) {
            result += tmpCard.toString() + " ";
        }
        return result;
    }
}